<?php

namespace App\Models;


class CourseOrder extends Orm
{
//    1排队中 	名额已满但又想报名时
//
//    2待上课		1报名成功且课程还未到课程course表的开课日期，2此课程所有章节未完成（不针对单个用户，指的是课程所有章节）
//
//    3已结课 	课程所有章节已完成
//
//    -1已取消		1报名成功主动取消2排队中主动取消
//
//    4报名失败    排队中一直到课程已经开始上课了都没报名成功

    protected $table = 'course_order';
    protected $dateFormat = 'U';
    public $timestamps = true;

    protected $casts = [
        'goods_snap' => 'json',
    ];

    public function userInfo()
    {
        return $this->belongsTo(Users::class, 'user_id', 'id');
    }

    public function getPayAtAttribute()
    {
        return $this->attributes['pay_at'] ? date('Y-m-d H:i:s', $this->attributes['pay_at']) : '';
    }

    public function courseInfo()
    {
        return $this->belongsTo(Course::class, 'course_id')->withTrashed();
    }

    public function campusInfo()
    {
        return $this->belongsTo(Campus::class, 'campus_id');
    }
    public function getPriceAttribute()
    {
        return $this->attributes['price'] <= 0 ? '免费' : '￥' . $this->attributes['price'];
    }

    public function courseSectionInfo()
    {
        return $this->hasMany(CourseSection::class, 'course_id','course_id');
    }

    public function courseSectionCompleteInfo()
    {
        return $this->hasMany(CourseSection::class, 'course_id','course_id')->where('end_time','<',time());
    }

    public function courseSectionBegin()
    {
        return $this->hasOne(CourseSection::class, 'course_id','course_id')->where('begin_time','<',time())->orderBy('begin_time','asc');
    }
}
